home *** CD-ROM | disk | FTP | other *** search
- package engine.dynamicObjects
- {
- import engine.BitmapLibrary;
- import engine.WorldScene;
-
- public class GoalRing extends DynamicObject
- {
-
-
- private var _collisionTimer:Number = 0;
-
- private var _flyThroughTimer:Number = 0;
-
- private var sinSeed:Number;
-
- private var _fg:GoalRing_FG;
-
- private var _flyThrough:Number = 0;
-
- private var _rMotion:Number = 0;
-
- private var sinFreq:Number = 0.05;
-
- public var rOffset:Number = 0;
-
- private var _collision:Boolean = false;
-
- private var sinAmp:Number = 0.05;
-
- private var _collected:Boolean = false;
-
- private var sin:Number = 0;
-
- private var _hasCollided:Boolean = false;
-
- private var _bg:GoalRing_BG;
-
- private var _cFrame:Number = 1;
-
- public function GoalRing()
- {
- sin = 0;
- sinAmp = 0.05;
- sinSeed = Math.random() * 2;
- sinFreq = 0.05;
- _rMotion = 0;
- _collision = false;
- _hasCollided = false;
- _collisionTimer = 0;
- _collected = false;
- _flyThrough = 0;
- _flyThroughTimer = 0;
- rOffset = 0;
- _cFrame = 1;
- super(BitmapLibrary.Stills.DYN_Invis);
- _objectType = OBJ_TYPES.GP;
- _drawMethod = DMETHOD.Slow;
- _persistent = true;
- solid = true;
- z = 1.75;
- s = 2.75;
- hitW = 55;
- hitH = 55;
- colOffsetY = -20;
- _bg = new GoalRing_BG();
- _bg.x = x;
- _bg.y = y;
- _bg.z = z;
- _bg.s = s;
- _bg.parentRing = this;
- WorldScene.Instance.addGPObjectAt(_bg,0);
- _fg = new GoalRing_FG();
- _fg.x = x;
- _fg.y = y;
- _fg.z = z;
- _fg.s = s;
- _fg.parentRing = this;
- WorldScene.Instance.addGPObject(_fg);
- }
-
- public function set SinAmp(val:Number) : *
- {
- sinAmp = val;
- }
-
- public function flyThrough() : *
- {
- ++_flyThrough;
- _flyThroughTimer = _flyThrough;
- }
-
- public function get Collected() : *
- {
- return _collected;
- }
-
- public function get Collision() : *
- {
- return _collision;
- }
-
- public function collide(side:String, dir:Number) : *
- {
- if(!_collision)
- {
- _collision = true;
- _collisionTimer = 25;
- _flyThrough = 0;
- _flyThroughTimer = 0;
- switch(side)
- {
- case "fg":
- _hasCollided = true;
- if(dir > r - 1.57 && dir < r + 1.57)
- {
- _rMotion = 4;
- }
- else
- {
- _rMotion = -4;
- }
- break;
- case "bg":
- _hasCollided = true;
- if(dir > r - 1.57 && dir < r + 1.57)
- {
- _rMotion = -4;
- }
- else
- {
- _rMotion = 4;
- }
- }
- }
- }
-
- override public function fStep() : *
- {
- super.fStep();
- --_collisionTimer;
- if(_collisionTimer < 0)
- {
- _collision = false;
- }
- if(_flyThrough > 0)
- {
- _flyThroughTimer += _flyThrough;
- }
- if(_flyThroughTimer > 30 && !_collected)
- {
- playAnim();
- WorldScene.Instance.addRingScore(this);
- Main.Instance.playSound("pickup");
- _collected = true;
- }
- sinSeed += sinFreq;
- sin = Math.sin(sinSeed) * sinAmp;
- vx = sin * 10;
- vy = sin * 35;
- r = rOffset + sin * 5 + _rMotion;
- if(_fg.destroyed && _bg.destroyed)
- {
- destroy();
- }
- _rMotion *= 0.95;
- _bg.x = x;
- _bg.y = y;
- _bg.r = r;
- _fg.x = x;
- _fg.y = y;
- _fg.r = r;
- }
-
- override public function playAnim() : *
- {
- _fg.playAnim();
- _bg.playAnim();
- }
-
- public function get HasCollided() : *
- {
- return _hasCollided;
- }
- }
- }
-